home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Tools 3
/
Amiga Tools 3.iso
/
programming
/
nnn1.35
/
src
/
neural.h
< prev
next >
Wrap
C/C++ Source or Header
|
1995-08-29
|
4KB
|
149 lines
/*
* $Id: Neural.h 1.14 1995/08/29 23:16:05 daltern Exp $
*
* This is the general header file for the program nnn and its
* associated functions.
*
*/
/*========================================================================*
INCLUDES
*========================================================================*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <signal.h>
/*
* Amiga specific includes
*/
#ifdef _AMIGA
#include <dos.h>
#endif
/*========================================================================*
DEFINITIONS
*========================================================================*/
#define TRUE 1
#define FALSE 0
#define RAND_FUNC drand48
#define SEED_FUNC srand48
#define NUM_RAND_STEPS 20
#define HIGH_STATE 1
#define LOW_STATE 0
#define MAXCHAR 100
#define MAX_VECS 1000
#define MAX_ITS 10000
#define USER_UPDATE 50
static char *DELIMITER[] = {
"#Weights", /* Start of section storing ANN weights */
"#Vectors", /* Start of section storing input vectors */
"#Layers" /* Start of layer size info */
};
/*========================================================================*
DATA TYPES
*========================================================================*/
struct Vectors {
int NumVecs;
float **InVec;
float **OutVec;
};
typedef struct Vectors VECTOR;
struct Net {
int NumLayers;
int *LayerSize;
};
typedef struct Net NET;
/*=========================================================================*
PROTOTYPES
*=========================================================================*/
extern float NetTransFunc( float,float );
extern void NetFeedForward( float ***,float **,NET,float );
extern void NetBackProp( float ***,float ***,float **,NET,float *,float,float,float );
extern void NetWriteConfig( NET,VECTOR,float ***,float,float,float,float,float,float );
extern void NetVecRand( VECTOR * );
extern void NetExit( NET *,VECTOR *,float **, float ***,float *** );
extern void NetAbort( int );
extern double drand48( void );
extern void srand48( long );
/*=========================================================================*
END OF NEURAL.H
*=========================================================================*/
/*
* $Id: Neural.h 1.14 1995/08/29 23:16:05 daltern Exp $
*
* This header file defines some macros for array allocation
* and deallocation.
*
*/
/*
* NOTE requires i,j and array to be defined in program
*/
#define MAKE1D(array,type,rows) {\
array = (type *)malloc(rows * sizeof(type)); \
}
#define MAKE2D(array,type,rows,cols) {\
array = (type **)malloc(rows * sizeof(type *)); \
for (i = 0; i < rows; i++) \
array[i] = (type *)malloc(cols * sizeof(type)); \
}
#define MAKE3D(array,type,depth,rows,cols) {\
array = (type *** )malloc(depth * sizeof(type **));\
for ( i = 0; i < depth; i++ ) {\
array[i] = (type **)malloc(rows * sizeof(type *));\
for ( j = 0; j < rows; j++ )\
array[i][j] = (type *)malloc(cols * sizeof(type));\
}\
}
#define FREE3D(array,depth,rows) {\
for( i = 0; i < depth; i++ ) {\
for ( j = 0; j < rows; j++ )\
free(array[i][j]);\
free(array[i]);\
}\
free(array);\
}
#define FREE2D(array,rows) {\
for(i = 0; i < rows; i++) \
free(array[i]); \
free(array);\
}